#pragma once
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
#include <string.h>
#include <sys/uio.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/socket.h>
#include"Log.h"

struct Buffer
{
    char *data;
    int cacpacity;
    int readpos;
    int writepos;
};

// 初始化一个buffer
struct Buffer *bufferInit(int size);

// 析构函数
void bufferDestory(struct Buffer *buffer);

// 扩容
void bufferExtendRoom(struct Buffer *buffer, int size);

// 得到剩余可写的内存容量
int getWriteableCapacity(struct Buffer *buffer);

int getReadableCapacity(struct Buffer *buffer);

// 第二个参数是要追加的字符串 ，第三个参数是是字符串的长度
int bufferAppendData(struct Buffer *buffer, const char *data, int size);
// size在函数内部用strlen获取
int bufferAppendString(struct Buffer *buffer, const char *data);

// 通信的文件描述符
// 第二个参数是用于通信的文件描述符
int bufferSocketRead(struct Buffer *buffer, int fd);

// 根据/r/n取出一行
char *bufferFindCRLF(struct Buffer *buffer);

// 发送数据
int bufferSendData(struct Buffer *buffer, int socket);
